home *** CD-ROM | disk | FTP | other *** search
/ Java Primer Plus / Java Primer Plus (Waite Group Proess)(1996).iso / java_Win / demo / ScrollingImages / ImageTape.class (.txt) < prev    next >
Encoding:
Java Class File  |  1995-12-07  |  3.5 KB  |  138 lines

  1. import java.applet.Applet;
  2. import java.awt.Color;
  3. import java.awt.Component;
  4. import java.awt.Graphics;
  5. import java.awt.Image;
  6.  
  7. public class ImageTape extends Applet implements Runnable {
  8.    Image[] imgs;
  9.    int nimgs;
  10.    int imgwidth;
  11.    // $FF: renamed from: x int
  12.    int field_0;
  13.    int newx;
  14.    int dist = 5;
  15.    int timeout = 200;
  16.    Thread scroller;
  17.    String dir;
  18.  
  19.    public void init() {
  20.       String var1 = ((Applet)this).getParameter("img");
  21.       this.dir = var1 != null ? var1 : "doc:/demo/images/duke";
  22.       var1 = ((Applet)this).getParameter("speed");
  23.       this.timeout = 1000 / (var1 == null ? 4 : Integer.valueOf(var1));
  24.       var1 = ((Applet)this).getParameter("dir");
  25.       this.dist = var1 == null ? 5 : Integer.valueOf(var1);
  26.       var1 = ((Applet)this).getParameter("nimgs");
  27.       this.nimgs = var1 == null ? 16 : Integer.valueOf(var1);
  28.       this.newx = this.field_0 = ((Component)this).size().width;
  29.       this.imgs = new Image[this.nimgs];
  30.  
  31.       for(int var2 = 0; var2 < this.nimgs; ++var2) {
  32.          this.imgs[var2] = ((Applet)this).getImage(((Applet)this).getDocumentBase(), this.dir + "/T" + (var2 + 1) + ".gif");
  33.       }
  34.  
  35.    }
  36.  
  37.    public void start() {
  38.       if (this.scroller == null) {
  39.          this.scroller = new Thread(this);
  40.          this.scroller.start();
  41.       }
  42.  
  43.    }
  44.  
  45.    public void stop() {
  46.       if (this.scroller != null) {
  47.          this.scroller.stop();
  48.          this.scroller = null;
  49.       }
  50.  
  51.    }
  52.  
  53.    public void run() {
  54.       while(true) {
  55.          try {
  56.             Thread.currentThread();
  57.             Thread.sleep((long)this.timeout);
  58.          } catch (InterruptedException var1) {
  59.          }
  60.  
  61.          this.scroll(this.dist);
  62.       }
  63.    }
  64.  
  65.    synchronized void scroll(int var1) {
  66.       this.newx += var1;
  67.       ((Component)this).repaint();
  68.    }
  69.  
  70.    public void update(Graphics var1) {
  71.       var1.setColor(Color.lightGray);
  72.       if (this.newx == this.field_0) {
  73.          this.paint(var1);
  74.       } else {
  75.          int var2 = this.newx - this.field_0;
  76.          if (var2 > 0) {
  77.             var1.copyArea(1, 1, ((Component)this).size().width - 2 - var2, ((Component)this).size().height - 2, var2, 0);
  78.  
  79.             for(this.field_0 = this.newx; this.field_0 > ((Component)this).size().width; this.field_0 -= Math.max(((Component)this).size().width - 2, this.imgwidth)) {
  80.             }
  81.  
  82.             this.paint(var1, 1, var2 + 1);
  83.          } else {
  84.             var1.copyArea(1 - var2, 1, ((Component)this).size().width - 2 + var2, ((Component)this).size().height - 2, 1, 1);
  85.  
  86.             for(this.field_0 = this.newx; this.field_0 < 0; this.field_0 += Math.max(((Component)this).size().width - 2, this.imgwidth)) {
  87.             }
  88.  
  89.             this.paint(var1, ((Component)this).size().width - 1 + var2, ((Component)this).size().width - 1);
  90.          }
  91.       }
  92.    }
  93.  
  94.    public boolean imageUpdate(Image var1, int var2, int var3, int var4, int var5, int var6) {
  95.       if ((var2 & 1) != 0) {
  96.          this.imgwidth += var1.getWidth(this);
  97.       }
  98.  
  99.       return super.imageUpdate(var1, var2, var3, var4, var5, var6);
  100.    }
  101.  
  102.    public void paint(Graphics var1, int var2, int var3) {
  103.       int var4 = this.field_0;
  104.       this.newx = var4;
  105.       var1.setColor(Color.lightGray);
  106.       var1.fillRect(var2, 1, var3 - var2, ((Component)this).size().height - 2);
  107.       var1.clipRect(var2, 1, var3 - var2, ((Component)this).size().height - 2);
  108.       var1.setColor(Color.black);
  109.  
  110.       for(int var5 = 0; var5 < this.nimgs; ++var5) {
  111.          if (this.imgs[var5] != null) {
  112.             int var6 = this.imgs[var5].getWidth(this);
  113.             int var7 = this.imgs[var5].getHeight(this);
  114.             if (var6 > 0 && var7 > 0) {
  115.                if (var4 + var6 > var2 && var4 < var3) {
  116.                   var1.drawImage(this.imgs[var5], var4, ((Component)this).size().height - (var7 + 1), this);
  117.                }
  118.  
  119.                if (var4 + var6 > ((Component)this).size().width) {
  120.                   var4 -= Math.max(((Component)this).size().width - 2, this.imgwidth);
  121.                   if (var4 + var6 > var2 && var4 < var3) {
  122.                      var1.drawImage(this.imgs[var5], var4, ((Component)this).size().height - (var7 + 1), this);
  123.                   }
  124.                }
  125.  
  126.                var4 += var6;
  127.             }
  128.          }
  129.       }
  130.  
  131.    }
  132.  
  133.    public void paint(Graphics var1) {
  134.       var1.draw3DRect(0, 0, ((Component)this).size().width, ((Component)this).size().height, true);
  135.       this.paint(var1, 1, ((Component)this).size().width - 1);
  136.    }
  137. }
  138.